package structuralPattern.composite.example01;

import java.util.ArrayList;
import java.util.List;

/**
 * 树枝节点
 *      -- 树枝节点是个容器对象
 *          可以包含树枝节点和叶子节点
 */
public class Composite extends Component{

    // 定义集合属性，保存子节点信息
    private List<Component> childList = new ArrayList<>();

    @Override
    public void add(Component c) {
        childList.add(c);
    }

    @Override
    public void remove(Component c) {
        childList.remove(c);
    }

    @Override
    public Component getChild(int i) {
        return childList.get(i);
    }

    // 具体业务方法
    @Override
    public void operation() {
        // 在循环中递归调用其他节点的operation方法
        for (Component component : childList) {
            component.operation();
        }
    }
}
